package net.huashitong.ssydt.provider.security.service;

import net.huashitong.ssydt.provider.security.dao.SsUserLoginTokenDao;
import net.huashitong.ssydt.security.entity.SsUserLoginToken;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.UUID;

/**
 * @author huiyang.yu
 */
@Service
@Transactional
public class SsUserLoginTokenServiceImpl implements SsUserLoginTokenService {

    @Autowired
    private SsUserLoginTokenDao dao;
    @Autowired
    private UserRedisService userRedisService;

    @Override
    public SsUserLoginToken getByUserId(String userId) {
        return dao.getByUserId(userId);
    }

    @Override
    public SsUserLoginToken login(String userId) {
        SsUserLoginToken ssUserLoginToken = getByUserId(userId);
        if (ssUserLoginToken == null) {
            ssUserLoginToken = new SsUserLoginToken();
            ssUserLoginToken.setUserId(userId);
            ssUserLoginToken.setToken(UUID.randomUUID().toString().trim().replaceAll("-", ""));
            ssUserLoginToken.setExpiration(System.currentTimeMillis() + 1296000000L);//15天后过期 1000*60*60*24*15 = 1296000000
            save(ssUserLoginToken);
        } else {
            ssUserLoginToken.setToken(UUID.randomUUID().toString().trim().replaceAll("-", ""));
            ssUserLoginToken.setExpiration(System.currentTimeMillis() + 1296000000L);//15天后过期 1000*60*60*24*15 = 1296000000
            update(ssUserLoginToken);
        }
        userRedisService.setToken(ssUserLoginToken.getUserId(), ssUserLoginToken.getToken());
        return ssUserLoginToken;
    }

    public void update(SsUserLoginToken ssUserLoginToken) {
        dao.update(ssUserLoginToken);
    }

    public void save(SsUserLoginToken ssUserLoginToken) {
        dao.save(ssUserLoginToken);
    }
}
